Device-to-device communication for resource sharing

ABSTRACT

Embodiments of techniques and systems associated with device-to-device (D2D) resource sharing are described. In some embodiments, a D2D communication channel between a first device and a second device is established and a sharing request is received at the first device, from the second device, including a credential identifying the second device. Data representative of a first resource locally available to the first device, but not locally available to the second device, is provided to the second device by the first device. Use of the first resource may be controlled in accordance with an instruction transmitted to the first device from the second device. Other embodiments may be described and/or claimed.

TECHNICAL FIELD

The present disclosure relates generally to the field of electricaldevices, and more particularly, to techniques and systems associatedwith sharing of resources between devices.

BACKGROUND

Existing architectures for sharing the resources of multiple devicesoften rely on a central server system for accessing the resources andallocating the resources to users of the devices. For example, cloudcomputing systems rely on an Internet communication interlace to connectusers with resources of the cloud devices. Private networks (e.g.,within a business or other institution) similarly rely on centralservers. Some network architectures are distributed (e.g., ad hoc sensornetworks) but such architectures are typically configured fortransmitting information from each of the distributed devices, and donot allow the devices to share control of device resources.

BRIEF DESCRIPTION OF THE DRAWINGS

Embodiments will be readily understood by the following detaileddescription in conjunction with the accompanying drawings. To facilitatethis description, like reference numerals designate like structuralelements. Embodiments are illustrated by way of example, and not by wayof limitation, in the figures of the accompanying drawings.

FIG. 1 is a block diagram illustrating an example D2D resource sharingdevice, in accordance with various embodiments.

FIGS. 2-13 are schematic illustrations of an example D2D resourcesharing scenario, in accordance with various embodiments.

FIG. 14 illustrates an example resource attribute manifest for use inD2D resource sharing, in accordance with various embodiments.

FIG. 15 is a flow diagram of an example process for enabling control ofa resource local to an owner device by a remote device, in accordancewith various embodiments.

FIG. 16 is a flow diagram of an example process for controlling aresource local to an owner device based on instructions from a remotedevice, in accordance with various embodiments.

FIG. 17 is a flow diagram of an example process for controlling a remoteresource, in accordance with various embodiments.

FIG. 18 is a flow diagram of an example process for aggregatingresources for representation to a service layer of a device, inaccordance with various embodiments.

FIG. 19 is a block diagram of an example computing device suitable forpracticing the disclosed embodiments, in accordance with variousembodiments.

DETAILED DESCRIPTION

Embodiments of techniques and systems associated with device-to-device(D2D) resource sharing are described. In some embodiments, a D2Dcommunication channel between a first device and a second device isestablished and a sharing request is received at the first device, fromthe second device, including a credential identifying the second device.Data representative of a first resource locally available to the firstdevice, but not locally available to the second device, is provided tothe second device by the first device. Use of the first resource may becontrolled in accordance with an instruction transmitted to the firstdevice from the second device.

In the following detailed description, reference is made to theaccompanying drawings which form apart hereof wherein like numeralsdesignate like parts throughout, and in which is shown by way ofillustration embodiments that may be practiced. It is to be understoodthat other embodiments may be utilized and structural or logical changesmay be made without departing from the scope of the present disclosure.Therefore, the following detailed description is not to be taken in alimiting sense, and the scope of embodiments is defined by the appendedclaims and their equivalents.

Various operations may be described as multiple discrete actions oroperations in turn, in a manner that is most helpful in understandingthe claimed subject matter. However, the order of description should notbe construed as to imply that these operations are necessarily orderdependent. In particular, these operations not be performed in the orderof presentation. Operations described may be performed in a differentorder than the described embodiment. Various additional operations maybe performed and/or described operations may be omitted in additionalembodiments.

For the purposes of the present disclosure, the phrase “A and/or B”means (A), (B), or (A and B). For the purposes of the presentdisclosure, the phrase “A, B, and/or C” means (A), (B), (C), (A and B),(A and C), (B and C), or (A, B and C).

The description uses the phrases “in an embodiment,” or “inembodiments,” which may each refer to one or more of the same ordifferent embodiments. Furthermore, the terms “comprising,” “including,”“having,” and the like, as used with respect to embodiments ofthepresent disclosure, are synonymous. As used herein, the terms “module”and “logic” may refer to, be part of, or include an Application SpecificIntegrated Circuit (ASIC), an electronic circuit, a processing device(shared, dedicated, or group) and/or memory (shared, dedicated, orgroup) that execute one or more software or firmware programs, acombinational logic circuit, and/or other suitable components thatprovide the described functionality.

The term “device,” as used herein, may include one or more wireless orwired electronic components such as a desktop computer, a laptopcomputer, a handheld computer, a tablet computer, a server, a cellulartelephone, a pager, an audio and/or video player (e.g., an MP3 player ora DVD player), a gaming device, a video camera, a digital camera, anavigation device (e.g., a GPS device), a “peripheral” (e.g., a printer,a scanner, a headset, a keyboard, a mouse, etc.), a medical device aheart rate monitor, a blood pressure monitor, etc.), and/or other fixed,portable, or mobile electronic devices. Devices may communicate witheach other (referred to as device-to-device or D2D communication) in anyof a number of ways, including Universal Serial Bus (USB) connections,wireless near-field communication (NFC) protocols, or any of a nuMber ofother wired or wireless communication modalities. The term“constellation,” as used herein, may refer to a collection of two ormore devices, each configured to share resources with at least one otherdevice in the collection. Communication between various pairs of devicesin a constellation may take place using different communicationmodalities for different pairs, or may be constrained to a single commonmodality. As used herein, the term “resource” may refer to a hardware,firmware, or software component, or a combination of two or more of suchcomponents, whose functionality may be used by a device. For example, avideo camera “device” may have video recording, audio recording, imageprocessing and storage “resources.” In another example, a laptopcomputer “device” may have a sensor interface “resource” and anaccelerometer “resource” coupled to the laptop computer via the sensorinterface.

As used herein, the terms “local” and “remote” may refer torelationships between resources and devices, and between devices. Aresource local to a device may be controlled by and/or in communicationwith the device, without use of the resource sharing systems and/ortechniques described herein. Examples of resources local to a device mayinclude resources embedded in the device (e.g., one or more processingdevices, such as processor cores, embedded in a computing device),resources controlled by the device through a wireless, NFC path (e.g., aheadset in communication with a smartphone via a Bluetooth protocol),and resources coupled to the device via a USB, parallel port, or otherwired or peripheral protocol (e.g., an electronic effects pedal in wiredcommunication with an electric guitar device. A device that is local toa resource may be referred to as the “owner” of the resource. A resourcemay have more than one owner device, and an owner device may beassociated with more than one resource. A resource remote to a devicemay not be controlled by and/or in communication with the device withoutgoing through an intermediate device that is an owner of that resource,without use of the resource sharing systems and/or techniques describedherein. A resource local to a remote device may be referred to as a“remote resource,” As used herein, “resources” may include physicaland/or virtual resources, and “devices” may include physical and/orvirtual devices. As used herein, “control” of a resource may includeaccess to or receipt of data associated with the resource (e.g., accessto video data generated by a digital video camera).

Referring now to FIG. 1, an example D2D resource sharing device 100 isillustrated, in accordance with various embodiments. Device 100 may beor may include any one or more of the devices described above, such as asmartphone or a tablet computer. Device 100 may own local resources 114which, as discussed above, may include one or more hardware, firmware,and/or software components. As discussed in detail below, device 100 maybe configured to share some or all of local resources 114 with other,similarly-configured D2D resource sharing devices. In some embodiments,this sharing may take place over D2D communication channels establishedbetween device 100 and each of the other devices (without the assistanceof a central coordinating server). In some embodiments, this sharing maytake place over communication channels established between device 100and each of the other devices with the assistance of one or morecoordinating servers (which may be remote to device 100). Additionally,information about local resources 114 may be provided to and processedby the other devices so that applications running on the other devicesare able to control local resources 114 as if they were local to theother devices.

In some embodiments, device 100 may include application layer 118,service layer 116 and resource management layer 102. In general, eachlayer of device 100 may process information about available resourcesand provide the processed information to one or more layers above it,thereby allowing the higher layers to operate at higher levels ofabstraction with regard to the available resources. One or moreapplications may execute in application layer 118 and may draw onresource information provided by service layer 116. In some embodiments,service layer 116 may be a mobile operating system (OS) service layer.In turn, service layer 116 may process resource information provided byresource management layer 102. In some embodiments, resource managementlayer 102 may manage access by service layer 116 and/or applicationlayer 118 to local resources 114 and/or remote resources (not shown). Insome embodiments, resource management layer 102 may notify service layer116 when changes in available resources occur. Service layer 116 maynotify currently active or future applications running in applicationlayer 118 of resource changes so that the applications may, for example,adapt to the addition of new resources and utilize them as if theresources were local to device 100. For example, in some embodiments,application layer 118 may register a callback when resource managementlayer 102 determines that a resource is newly available, is no longeravailable, has had a change in one or more properties, or under anyother suitable condition.

Resource management layer 102 may include D2D communication module 104.D2D communication module 104 may be coupled to credential managementmodule 106, resource aggregation module 108, and local resourcecontroller 110. In some embodiments, D2D communication module 104 may beconfigured for receiving a sharing request from a remote device (notshown). The sharing request may represent a request from the remotedevice to initiate a session to share resources. This “sharing” may takethe form of the use (and/or offer of use) of one of local resources 114by the remote device, the use (and/or offer of use) of a resource localto the remote device by device 100, or a combination of both. As usedherein, the “control” of a device may include D2D communication module104 may receive a sharing request via one or more wired or wirelesscommunications components, such as one or more antennas.

In some embodiments, a sharing request may be triggered by one or moreactions, such as an NFC tap, a change of location of the requestingdevice (as determined, e.g., by a global positioning system (GPS) deviceor an accelerometer), an infrared-based ping query between the devices,etc. In some embodiments, the trigger action may be user configurable(e.g., through a user interface on the requesting device, such as akeypad, touchscreen, or other interface). In some embodiments, a sharingrequest from a device may include credential data which may, forexample, identify the device. Various embodiments of sharing requestsare discussed below with reference to credential management module 106and with reference to FIGS. 2 and 15. In some embodiments, a sharingrequest may be transmitted separately from credential data.

D2D communication module 104 may also be configured for establishing aD2D communication channel between device 100 and a remote device, fortransmitting information and instructions to the remote device via theD2D communication channel, and/or for receiving information andinstructions from the remote device via the D2D communication channel.In some embodiments, a D2D communication channel may be a private securechannel between two devices over which resource sharing information andinstructions may be transmitted. A private secure channel may beestablished between two devices in accordance with any suitabletechnique known in the art. For example, in some embodiments, a SecureSocket Layer (SSL) protocol and/or a Transport Layer Security (TLS)protocol (e.g., with mutual authentication) may be used. In some suchembodiments, an encrypted channel may be established between twodevices, and the devices may authenticate each other using X.509certificates or another public-private key authentication scheme.

Resource management layer 102 may include credential management module106. Credential management module 106 may be coupled to D2Dcommunication management module 104 and local resource control module110. In some embodiments, credential management module 106 may beconfigured for providing and/or receiving credentials for identifying,authenticating, and/or authorizing the sharing of resources betweendevice 100 and one or more remote devices. For example, credentialmanagement module 106 may be configured for receiving, from a remotedevice, a credential that identifies the remove device and that may beused to enable the remote device to control one or more of localresources 114 via instructions transmitted from the remote device todevice 100 (via a D2D communication channel established by D2Dcommunication management module 104). In some embodiments, credentialdata from a device may include a uniqu.c device name, serial number, orother identifier. In some embodiments, credential data managed bycredential management module 106 may identify a remote device asbelonging to an authorized group of devices with which sharing may takeplace (e.g., a group of devices owned by a common organization, or madeavailable to each other via a sharing agreement).

In some embodiments, a credential may include an encryption key, asecurity certificate, a password, or other data that the remote devicemay use to signal to device 100 that the remote device is or should beauthorized by device 100 to share local resources 114 (or a subsetthereof). In some embodiments, a credential may authenticate theidentity of a device in accordance with known techniques forautomatically secured D2D communication. For example, credentialmanagement module 106 may generate a character string, and may authorizea remote device to share local resources 114 when the remove deviceprovides that character string to device 100 as a credential. In someembodiments, device 100 and the remote device must be in physicalproximity to allow visual transfer of the character string (e.g., byhaving a camera of the remote device capture the character string from adisplay of device 100, or by having a user of the remote device view adisplay of device 100 and manually enter the character string using akeyboard of the remote device). In some embodiments, credential dataprovided by a remote device may be accompanied by data representative ofshareable resources local to the remote device; in other embodiments,data representative of shareable resources may be provided separatelyfrom credential data. Such latter embodiments may advantageouslyminimize wasted data transfer when, for example, a remote device'scredentials are not accepted by device 100 and thus sharing will beprohibited.

In some embodiments in which a constellation of three or more devicesare sharing resources in some combination, one or more of the devices inthe constellation may serve as central credential management entities,and may maintain credential data and make credential determinations forthe entire constellation. In some embodiments, such central credentialmanagement entities may synchronize credential data among the devices inthe constellation on a synchronous or asynchronous basis. In someembodiments, a session token may be supplied to establish a securesession for resource sharing; other session attributes (such as a listof current devices in the constellation, refreshed authenticationcredentials etc) may also be supplied as part of establishing thesession. Depending on the degree of robustness desired for theconstellation, a device added to the constellation may serve as a meshor ring network node as well, so as to help maintain the constellationif other devices exit the constellation.

Credential management module 106 may also be configured, along with D2Dcommunication module 104 and resource aggregation module 108 (discussedbelow), to manage the process of one or more remote devices leaving aresource sharing arrangement with device 100 and thus the loss of one ormore remote resources. For example, in some embodiments, credentialmanagement module 106 may, along with resource aggregation module 108,provide an “exit event” to application layer 118 when a remote deviceand/or resource is no longer accessible to device 100 (e.g., because theremote device loses power, or is dropped and breaks). The exit eventprovided to application layer 118 may be provided in a manner similar toexisting techniques for managing “hot plug” devices (such as smart cardsor server storage racks).

Resource management layer 102 may inc ude resource aggregation module108. Resource aggregation module 108 may be coupled to D2D communicationmodule 104 and local resource properties management module 112. In someembodiments, D2D communication module 104 may receive, from a remotedevice, data representative of a resource locally available to theremote device but not locally available to device 100. In suchembodiments, resource aggregation module 108 may be configured toprovide, to another layer in device 100 (e.g., service layer 116), arepresentation of this resource as a local resource available for use bydevice 100. For example, in embodiments in which resource aggregationmodule 108 provides a representation of a non-local resource (e.g., aresource local to a remote device) to service layer 116, the non-localresource may appear to service layer 116 as a local resource availablefor use by service layer 116 and/or other layers such as applicationlayer 8.

Service layer 116 and/or application layer 118 may provide instructionsfor control of the non-local resource as if the non-local resource werelocal to device 100. In some embodiments, resource management layer 102may intercept these instructions and route them to the appropriate localcomponent (e.g., local resource control module 110, discussed below) orremote device. In some embodiments, resource aggregation module 108 mayabstract the mechanisms and internal details required to use a local orremote resource, and present resources as virtual resources using astandard application programming interface (API). For example, in someembodiments, resource aggregation module 108 may expose itself as adevice driver (e.g., when some or all resources are usually exposed viadevice drivers, such as hard drive resources). Other existingprogramming APIs may bc used. In some embodiments, service layer 116 mayembody one or more such standardized APIs (e.g., Open Device, Read,Write, etc.) to access resources. Resource management layer 102 may thenimplement the API by parsing and routing more primitive commands to thetargeted resource. Some embodiments may “virtualize” a resource bymaking it appear that a single resource can be “owned” by multipleclients or exists as multiple instances. In some embodiments, a remoteresource meant to appear as a local resource could also be sovirtualized; as such, remote resource virtualization may occur beforeaggregation and/or standard resource virtualization takes place. Aremote resource may have a local “proxy” equivalent that, when accessed,routes resource interaction requests to the remote device.

In some embodiments, resource aggregation module 108 may be configuredfor aggregating information about multiple ones of local resources 114that are of a same type and providing a representation of an aggregateresource to another layer in device 100 (e.g., service layer 116) or toanother device (such as a remote device). In some embodiments, resourceaggregation module 108 may be configured for aggregating informationabout one or more of local resources 114 and one or more resources of asame type that are local to a remote device hut not local to device100), and providing a representation of an aggregate resource to anotherlayer in device 100 or to another device. In some embodiments, resourceaggregation module 108 may be configured for aggregating informationabout one or more resources of a same type that are local to differentremote devices (hut not local to device 100), and providing arepresentation of an aggregate resource to another layer in device 100or to another device. In some embodiments, resource aggregation module108 may be configured for providing a representation of an aggregateresource based on any combination of resources available locally todevice 100 or any of its remote devices. Various embodiments oftechniques for determining type and aggregating resources are discussedbelow (e.g., with reference to FIG. 18).

Resource management layer 102 may include local resource control module110. Local resource control module 110 may be coupled to D2Dcommunication module 104, credential management module 106 and localresource properties management module 112. In some embodiments, localresource control module 110 may be configured for determining that aremote device is or should be authorized to control one or more of localresources 114. In some embodiments, this determination may be based onone or more credentials received from the remote device (and processedor otherwise stored by credential management module 106). Credentialmanagement module 106 may also store data representative of which remotedevices are authorized to access which (if any) of local resources 114.Such information may be referred to herein as an access control (ACL),which may be stored in a memory associated with local resource controlmodule 110. In some embodiments, an ACL may be associated with a singleremote device and may identify which of local resources 114 the remotedevice is authorized to control (as well as any conditions on thatcontrol, such as read-only, write-only, or read-write). In someembodiments, on ACL may be associated with a class of remote devices(e.g., all smartphones). In some embodiments, a single ACL may beassociated with any remote device which is properly authenticated forresource sharing with device 100. Credential management module 106 mayfurther store information about the relative priority of various remotedevices in using various ones of local resources 114.

In some embodiments, local resource control module 110 may be configuredfor controlling use of one or more of local resources 114 in accordancewith instructions transmitted to device 100 from one or more remotedevices authorized to control the one or more local resources 114, orfrom layers of device 100 such as service layer 116 and/or applicationlayer 118. Local resource control module 110 may receive informationabout which remote devices are authorized to control which of localresources 114 from credential management module 106, and in someembodiments, may use this information to determine which instructionsreceived from remote devices via D2D communication module 104 are to beexecuted. In some embodiments, D2D communication module 104 evaluateswhether instructions are authorized in accordance with informationstored in credential management module 106 prior to passing instructionsto local resource control module 110.

Resource management layer 102 may include local resource propertiesmanagement module 112. Local resource properties management module 112may be coupled to resource aggregation module 108 and local resourcecontrol module 110. In some embodiments, local resource propertiesmanagement module 112 may include memory to store data about propertiesof one or more of local resources 114. That data may be used by resourceaggregation module 108 to determine how Co represent local resources 114to other layers (such as service layer 116 and/or application layer 118)and/or to remote devices, and how to aggregate local resources 114 amongthemselves and/or with resources not local to device 100. In someembodiments, data about properties of one or more of local resources 114may be provided to local resource controller 110 prior to executing areceived instruction to ensure that the local resource targeted by theinstruction has the properties required or desired for proper executionof the instruction.

One example of data representative of one or more of local resources 114may include data representative of current or past usage of a localresource. Another example is an indicator of the “stickiness” of aparticular property; whether that particular property (e.g., acalibration factor of a medical device, or a baseline value for asensor) is subject to change when a particular device the device 100 ora remote device) ceases to control the resource. In some embodiments,one or more properties of each local resource 114 are included in aresource property manifest stored in local resource propertiesmanagement module 112. Various embodiments of local resource propertiesthat may be stored in local resource properties management module 112are discussed below (e.g., with reference to FIG. 14).

In some embodiments, applications and/or other processes executing ondevice 100 (e.g. in service layer 116 and/or application layer 118) maybe designed or optimized for use with resources that may be not beconsistently available (e.g., local resources that are shared with otherdevices, or remote resources which may become unavailable when theirowner device stops sharing the remote resource.) Such processes may, forexample, perform processing operating in smaller batches to reduce theprobability of a disruption in the middle of a batch and improve theability of the process to move operating to available resources.

Referring now to FIGS. 2-13, schematic illustrations of an example D2Dresource sharing scenario are provided, in accordance with variousembodiments. The scenario of FIGS. 2-13 is intended to illustratevarious aspects of the operation of embodiments of the D2D resourcesharing techniques and systems described herein, and is not limiting ofthe operation of the disclosed techniques and systems.

FIG. 2 depicts two devices: device 1 200 a and device 2 200 b. Device 1200 a and device 2 200 b may be remote from each other. Device 1 200 aand device 2 200 b may be any number of different devices, such as anyof the devices described above. For example, in some embodiments, device1 200 a includes a personal computing device and device 2 200 b includesa personal computing device, a camera, and/or a musical instrument. Insome embodiments, device 1 200 a and device 2 200 b may be two devicesbelonging to a common individual or family, or may be managed in acommon enterprise environment. In some embodiments, device 1 200 a anddevice 2 200 b may belong to different users who wish to use the devicesto play a multi-player game.

In FIG. 2, device 1 200 a owning resource 1 214 a is shown as receivingsharing request 220 front device 2 200 b. Sharing request 220 mayinclude credential 224, which may identify device 2 200 b to device 1200 a. Device 1 200 a and device 2 200 b may be configured as describedabove for device 100 of FIG. 1. In particular, each of device 1 200 aand device 2 200 b may have a resource management layer configured asdescribed above for resource management layer 102 of FIG. 1. Sharingrequest 220 may be transmitted to device 1 200 a from device 2 200 bover a D2D communication channel.

In FIG. 3, device 1 200 a is shown as providing data 222, representativeof resource 1 214 a, to device 2 200 b. Data 222 may be derived from,for example, an ACL associated with device 2 200 b, associated withresource 1 214 a, or both. Data 222 and credential 224 may betransmitted from device 1 200 a to device 2 200 b over a D2Dcommunication channel.

In FIG. 4, device 1 200 a is shown as receiving an instruction 226 fromdevice 2 200 b to control the use of resource 1 214 a. Instruction 226may be transmitted to device 1 200 a from device 2 200 b over D2Dcommunication channel. In some embodiments, although resource 1 214 a isnot local to device 2 200 b, a resource management layer included indevice 2 200 b (such as resource management layer 102 of FIG. 1) mayprovide a representation to a service and/or application layer of device2 200 b so that resource 1 214 a appears to the service and/orapplication layer to be local to device 2 200 b. As such, from theperspective of the service and/or application layer of device 2 200 b,control of resource 1 214 a may appear to be direct control of a localresource, as represented by dotted arrow 228. In some embodiments,control instruction 226, as transmitted to device 1 200 a, may besubstantially similar to a control instruction that would be transmittedby a service and/or application layer of device 2 200 b if resource 1214 a were local to device 2 200 b. In some such embodiments, device 1200 a may act substantially as a conduit of control instruction 226,passing the instruction to a controller of resource 1 214 a (e.g., localresource controller 110 of FIG. 1) for execution.

In some embodiments, when resource 1 214 a generates data in response toexecuting control instruction 226, the data is transmitted from device 1200 a to device 2 200 b in substantially the same form as generated byresource 1 214 a. When a service and/or application layer of device 2200 b receives this data, the data appears to have come directly from alocal resource. For example, in some embodiments, resource 1 214 a maybe an electronic keyboard configured to generate musical instrumentdigital interface (MIDI) data when keys are depressed. When device 2 200b is in control of resource 1 214 a, this MIDI data may be routedthrough device 1 200 a and to device 2 200 b substantially unchanged;from the perspective of device 2 200 b, the electronic keyboard is ownedby device 2 200. Embodiments in which a device may control a remoteresource using “raw” instructions interpretable by the remote resource(instead, for example, of providing an instruction in a form that mustbe interpreted and translated by an application executing on the ownerdevice) may improve the granularity with which a device may control aremote resource, thereby allowing a fuller range of control. Similarly,embodiments in which a device may receive data generated by the remoteresource in a substantially “raw” form may improve the granularity withwhich the device may interpret and respond to the data.

In some embodiments, the control instruction of FIG. 4 may be providedin response to a request by an application or other process executing ondevice 2 200 b for resource 1 214 a or a resource similar to resource 1214 a. For example, an application executing on device 2 200 b mayrequire (or desire) additional processing power during a computationallyintensive operation. In some such embodiments, device 2 200 b mayrespond to this requirement or desire by determining whether any remoteresources (such as resource 1 214 a) may be available to service therequirement or desire (e.g., via a resource management layer such asresource management layer 108 of FIG. 1). If a remote resource isavailable, device 2 200 b may utilize the remote resource as if it werelocal. In some embodiments, the requesting application or process may beunaware of the origin of the resource. In another example, anapplication executing on device 2 200 b may identify a specific remoteresource that it wishes to use a specialized piece of laboratoryequipment owned by another university). In some such embodiments, aresource management layer (such as resource management layer 108 ofFIG. 1) may communicate with the owner device of the identified remoteresource for control of the identified remote resource.

In FIG. 5, device 2 200 b is shown as providing data 230, representativeof resource 2 214 b, to device 1 200 a. Device 1 200 a is shown asproviding credential 232 to device 2 200 b. Data 230 and credential 232may be transmitted between device 2 200 b and device 1 200 a over a D2Dcommunication channel in some embodiments, device 2 200 b may providedata 230, and device 1 200 a may provide credential 232, as part of amutual credentialing process that may include device 1 200 a providingdata 222 and device 2 200 b providing credential 224 (as shown in FIGS.2 and 3). In some embodiments, data 230 and/or credential 232 may beprovided to device 1 200 a in response to a sharing request transmittedfrom device 1 200 a to device 2 200 b (not shown). In some embodiments,a mutual credentialing process may be triggered by a sharing requesttransmitted by one or both of device 1 200 a and device 2 200 b. In someembodiments, a sharing request may include credential data.

As discussed above, in some embodiments, resources local to differentremote devices may be aggregated and presented as an aggregate resource.In some embodiments, this aggregation occurs when the resources are of asame or similar type such that treatment as an aggregate resource ispossible or suitable. For example, if resource 1 214 a is a storagedevice with a capacity of 5 GB, and resource 2 114 b is a storage devicewith a capacity of 3 GB, resource 1 214 a and resource 2 214 b may beaggregated and represented as a single aggregate storage device with acapacity of 8 GB.

FIG. 6 illustrates the representation of an aggregation. In particular,in FIG. 6, device 1 200 a is expanded to show its component servicelayer 216 a and resource management layer 202 a. Service layer 216 a maybe configured as described above for service layer 116 of FIG. 1, andresource management layer 202 a may be configured as described above forresource management layer 102 of FIG. 1. Resource management layer 202 ais shown as providing, to service layer 216 a of the device 1 200 a, arepresentation 233 of an aggregation of resource 1 214 a and resource 2214 b as an aggregate local resource available for use by service layer216 a. Using the storage device aggregation example from above, becauseof representation 233, resource 1 214 a and resource 2 214 b may appearto service layer 216 a as a single local storage device with a capacityof 8 GB.

In FIG. 7, device 1 200 a is shown as providing instruction 234 todevice 2 200 b to control the use of resource 2 214 b. Instruction 234may be transmitted to device 2 200 b from device 1 200 a over acommunication channel. In some embodiments, instruction 234 is based ona first instruction provided by a service or application layer of device1 200 a; the first instruction may be routed to the appropriate device(e.g., device 1 200 a or device 2 200 b) to which the desired resourceis local. When a resource is aggregated, a resource aggregation modulein a resource management layer (such as resource aggregation module 108of resource management layer 102 of FIG. 1) may determine to which oneor more device the instruction is most properly routed (based on, forexample, the demand on various devices, the priority of the requestingdevice among other remote devices, etc.). As discussed above, from theperspective of the service and/or application layer of device 1 200 a,control of resource 2 214 b may appear to be direct control of a localresource, as represented by dotted arrow 236.

In FIG. 8, device 1 200 a is shown as receiving sharing request 239 fromdevice 3 200 c. Sharing request 239 may include credential dataidentifying device 3 200 c. Device 3 200 c may be configured asdescribed above for device 100 of FIG. 1. Device 1 200 a is also shownin FIG. 8 as providing data 238, representative of resource 1 214 a, todevice 3 200 c. Data 238 may be transmitted to device 3 200 c fromdevice 1 200 a over a D2D communication channel. In some embodiments,device 3 200 c may perform a similar exchange of data with device 2 200b over a D2D communication channel between device 3 200 c and device 2200 b.

In FIG. 9, device 1 200 a is shown as receiving an instruction 242 fromdevice 3 200 c to control the use of resource 1 214 a. Instruction 242may be transmitted to device 1 200 a from device 3 200 c over a D2Dcommunication channel. As discussed above with reference to FIG. 4,although resource 1 214 a is not local to device 3 200 c, a resourcemanagement layer included in device 3 200 c (such as resource managementlayer 102 of FIG. 1) may provide a representation to a service and/orapplication layer of device 3 200 c so that resource 1 214 a appears tothe service and/or application layer to be local to device 3 200 c. Assuch, from the perspective of the service and/or application layer ofdevice 3 200 c, control of resource 1 214 a may appear to be directcontrol of a local resource, as represented by dotted arrow 244.

In FIG. 10, device 1 200 a, is shown as providing, to device 2 200 b,updated data 246 representative of resource 1 214 a. In someembodiments, device 1 200 a may send updated data regarding a localresource (such as resource 1 214 a) to one or more of its remote deviceswhen the properties of the local resource change (e.g., the capacity ofa storage device), after device 1 200 a or one of its remote devicesprovides instructions to control the local resource, and/or after device1 2001 or one of its remote devices relinquishes control over the localresource. For example, in some embodiments, resource 1 214 a may includea storage device including files related to a common project betweendevice 1 200 a, device 2 200 b, and device 3 200 c. When one or more ofthese project files is changed by device 3 200 c, updated datarepresentative of the files may be transmitted to device 2 200 b whendevice 3 200 c finishes changes the files, or on a periodic orasynchronous basis.

In FIG. 11 device 1 200 a is shown as providing credential 250 to device3 200 c. Device 3 200 c is shown as providing data 248, representativeof resource 3 214 c, to device 1 200 a. Data 248 and credential 250 maybe transmitted between device 3 200 c to device 1 200 a over a D2Dcommunication channel. A sharing request may also be transmitted fromdevice 3 200 c (not shown), and some or all of these transmission may bepart of a mutual credentialing process including device 1 200 aproviding credential 240 to device 3 200 c (as shown in FIG. 8).Credential 250 (provided by device 1 200 a to device 3 200 c) may bedifferent from credential 232 (provided by device 1 200 a to device 2200 b), for example, when the credentialing protocols for resourcesharing employed by device 2 200 b and device 3 200 c are different.

If resource 3 214 c is of a same type as resource 1 214 a and resource 2214 b, device 1 200 a may represent these local resources as a singleaggregate resource (e.g., as discussed above with reference to FIG. 6).Continuing with the storage device example discussed above, if resource1 214 a is a storage device with a capacity of 5 GB, resource 2 214 b isa storage device with a capacity of 3 GB, and resource 3 214 c is astorage device with capacity 6 GB, resource 1 214 a, resource 2 214 b,and resource 3 214 c may be aggregated and represented as a singleaggregate storage device with a capacity of 14 GB. FIG. 12 illustratesthe representation of an aggregation. In particular, in FIG. 12, device1 200 a is expanded to show its component service layer 216 a andresource management layer 202 a. Resource management layer 202 a isshown as providing, to service layer 216 a of the device 1 200 a, arepresentation 252 of an aggregation of resource 1 214 a, resource 2 214b, and resource 3 214 c as an aggregate local resource available for useby service layer 216 a. Because of representation 252, resource 1 214 a,resource 2 214 b, and resource 3 214 c may appear to service layer 216 aas a single local storage device with a capacity of 14 GB. If resource 2214 b and resource 3 214 c were of a same type, and resource 1 214 awere of a different type, resource management layer 202 a may provide,to service layer 216 a, a representation of an aggregation of resource 2214 b and resource 3 214 c as an aggregate local resource available foruse by service layer 216 a.

In FIG. 13, device 1 200 a is shown as providing instruction 254 todevice 2 200 b to control the use of resource 2 214 b, and instruction256 to device 3 200 c to control the use of resource 3 214 c.Instructions 254 and 256 may be transmitted to device 2 200 b and device3 200 c, respectively, over separate D2D communication channels. Device1 200 a is also shown as providing instruction 255 from service layer216 a to resource management layer 202 a to control the use of resource1 214 a. In some embodiments, these multiple instructions may betriggered by a control instruction from service layer 216 a targeted toan aggregate resource; resource management layer 202 a may interceptthis instruction and transmit multiple instructions to each of thedevices local to the resources that made up the aggregate. As discussedabove with reference to FIG. 7, the allocation of instructions betweenvarious devices local to components of an aggregate may depend on any ofa number of factors stored in a resource aggregation module and/or acredential management module (such as resource aggregation module 108and/or credential management module 106 of FIG. 1), including thebandwidth available on various D2D communication channels, the demand onthe component resources, etc. From the perspective of the service and/orapplication layer of device 1 200 a, control of resource 1 214 a,resource 2 214 b and resource 3 214 c may appear to be direct control ofa single local resource.

As illustrated in FIGS. 2-13, two or more devices configured for D2Dresource sharing as described herein may communicate over pairwise D2Dcommunication channels to pass credentials, data representative ofresources, resource control instructions, and other data. In someembodiments, the devices may be arranged in a peer-to-peer networkarchitecture. In some embodiments, the devices may be arranged in ahierarchical network architecture, wherein one or more “master” devicesis voted on or predetermined to be in control of the allocation ofresources to devices.

FIGS. 2-13 illustrate the establishment of D2D communication channelsbetween pairs of devices. In some embodiments, devices that shareresources may stop sharing and/or terminate one or more D2Dcommunication channels in which they participate. A first device maystop sharing with a second device for any of a number of reasons. Forexample, in some embodiments, a first device may stop sharing with asecond device when the geographic distance between the first and seconddevices exceeds a threshold (e.g., the threshold for adequate wirelessNYC strength). In some embodiments, a first device may stop sharing witha second device when the second device leaves a predefined area (such asa business office) orison longer connected to a trusted network. In someembodiments, a first device may stop sharing with a second device whenthe first device anticipates or experiences extended use of its localresources, and does not wish to waste overhead in maintaining any D2Dcommunication channels for sharing. For example, a video camera devicemay no longer be able to share any data with a second device if thevideo camera device no longer has access to a high bandwidth connection;in some such embodiments, a resource management layer of the seconddevice may delete the video camera device from the constellation ofsharing devices and notify other devices in the constellation of thedeletion of the video camera device. In some embodiments, only currentlyactive devices in the constellation are notified substantiallycontemporaneously with the deletion of the video camera device, whilesleeping devices or other inactive devices may be notified at a latertime.

Referring now to FIG. 14, an example resource property manifest 1400 isillustrated, in accordance with various embodiments. In someembodiments, resource property manifest 1400 may be a file, databaseentry or other data set that includes data representative of one or moreresources. In some embodiments, resource property manifest 1400 may bestored in memory associated with local resource properties managementmodule 112 (FIG. 1), and may include data representative of one or moreof local resources 114. In some embodiments, resource property manifest1400 may be stored in resource aggregation module 108 (FIG. 1), and mayinclude data representative of one or more resources that are not localto device 100, but which may be available to device 100 through D2Dresource sharing as described herein. In some embodiments, only thedevice or devices for which a resource is local may edit the resourceproperty manifest associated with that resource; in some suchembodiments, other devices receive read-only copies of the resourceproperty manifest, or portions of or derivative data based on theresource property manifest, but may not change the manifest itself.

Resource property manifest 1400 may include a number of different kindsof data about the one or more resources associated with resourceproperty manifest 1400. For ease of discussion of FIG. 14, the one ormore resources associated with resource manifest 1400 may be referred toas “the resource.” in some embodiments, resource property manifest 1400may include type data 1402. Type data 1402 may be representative of atype of the resource; for example, whether the resource is a storagedevice, a global positioning system (GPS) device, a camera, anaccelerometer, another sensor, etc. Type data 1402 may be used byresource management layer 102 in determining how to represent theresource to higher layers, such as service layer 116 and applicationlayer 118. In some embodiments, type data 1402 may be used by resourceaggregation module 108 (FIG. 1) to determine whether and how theresource may be aggregated with other resources.

In some embodiments, resource property manifest 1400 may includeallocation map data 1404. Allocation map data 1402 may be representativeof whether or not the resource is currently in use by arty devices whichare authorized to control the resource. Allocation map data 1402 may berepresentative of the number of devices authorized to control theresource, and/or how many such devices are currently controlling, orrecently have controlled, the resource. Allocation map data 1402 may berepresentative of the relative priority and/or criticality of currentuses of the resource. For example, in some embodiments, resourcemanagement module 102 (FIG. 1) may use criticality data included inallocation map data 1402 to transmit an alert to a device currentlyusing the resource in a critical application (e.g., a time-sensitivemeasurement of a patient in a hospital) that an owner of the resource isabout to terminate the sharing of the resource (and/or may transmit analert to the owner of the resource).

In some embodiments, resource property manifest 1400 may includestickiness data 1406. As discussed above with reference to FIG. 1, asused herein, the “stickiness” of a property of a resource may indicatewhether that particular property (e.g., a calibration factor of amedical device, or a baseline value for a sensor) is subject to changewhen a particular device (e.g., the device 100 or a remote device)ceases to control the resource. For example, in some embodiments, anaudio recording resource may store a short recorded segment in atemporary buffer before transferring that segment to a more permanentstorage location. If a first device uses the audio recording resource,the buffer may be emptied when a second device begins to use the audiorecording resource. It may be important, therefore, for devices to knowwhich properties of resources are “sticky” in the sense that they willbe retained by the resource across multiple device “users” and whichones are not (so that proper precautions may be taken to save desireddata or to recalibrate the device upon a new use, for example).

In some embodiments, resource property manifest 1400 may include syncmap data 1408. In some embodiments, sync map data 1408 may be used toconstrain two or more resources in a constellation to adhere to the sameinternal state or properties. For example, a second display resource ona remote device might be set in “mirror mode” by an application on theremote device having access to both local and remote displays asdistinct resources. By storing an indication of the “mirror mode” amongsync map data 1408, the matching of displays may be enforced so that twoconstellation users may see the same content on their individualdisplays. In some eMbodiments, sync map data 1408 for a particularresource may indicate that such “mirror modes” or other synchronizationshould be supported by any user of the resource. In another example, onedevice may act on a mirrored display resource with a local inputresource (e.g., a touch screen), and the touch action may be sent as rawinput to the remote device, displayed on the remote device's displayresource, then mirrored back to the local display device. In anotherexample, an area of RAM may be aggregated across two devices as adisplay “frame buffer,” with each device displaying a complementaryportion of the frame buffer on the device's local display. In such anembodiment, sync map data 1408 may indicate that the content of theframe buffer should be kept in sync between the two devices.

In some embodiments, the systems and techniques disclosed herein may beadvantageously used in mobile device systems to allows users of theresources (e.g., applications running on the mobile devices) to takeadvantage of the dynamic availability of resources due to the migrationof devices and resources in and out of the constellation. Thesedynamically available resources may be exposed by a resource manager(such as resource management layer 102 of FIG. 1) directly toapplications (e.g., in application layer 118 of FIG. 1). Systems inaccordance with such embodiments may enable a computing environment inwhich, for example, applications may register a callback when a resourcebecomes available or when other resource-related conditions occur (e.g.,when) the communication bandwidth of the device drops below a thresholdfor acceptable use of a remote resource). In one example embodiment,device 100 may be a mobile computing device (e.g., a phone, tablet, orlaptop) and applications running in application layer 118 of device 100may be in communication with local resources 114. As device 100 movesfrom one environment to another, new resources may become available forcontrol by device 100 via a D2D communication channel (e.g., when device100 enters a user's home, remote resources such a local thermostat, anelectronic light control system, and a musical instrument may all becomeavailable). When the access control setting are appropriate,applications running on device 100 may control the remote resources asif they were local. For example, a music playback application (runningin application layer 118) may provide a feature that allows the songsthat are played to be downloaded to the remote musical instrument, aswell as adjust the temperature and lighting to suit the mood of the songthat is being played back.

Referring now to FIG. 15, a flow diagram is provided of an exampleprocess 1500 for enabling control of a resource local to an owner deviceby a remote device, in accordance with various embodiments. It may berecognized that, while the operations of process 1500 (and the otherprocesses described herein) are arranged in a particular order andillustrated once each, in various embodiments, one or more of theoperations may be repeated, omitted or performed out of order. Forillustrative purposes, operations of process 1500 may be described asperformed by various components of device 100 (FIG. 1), but process1500, and individual operations of process 1500, may be performed by anysuitably configured component or combination of components of device100.

Process 1500 may begin at operation 1502 in which device 100 mayestablish a D2D communication channel with a remote device. In someembodiments, operation 1502 may be performed by D2D communication module102 (FIG. 1). In some embodiments, the D2D communication channel may bea temporary channel, and may be unsecured or may have a low level ofsecurity.

At operation 1504, device 100 may determine whether a sharing requesthas been received from the remote device with which a D2D communicationchannel was established at operation 1502. In some embodiments,operation 1504 may be performed by D2D communication module 102 (FIG.1). In some embodiments, operation 1504 may include some or all of theoperations described above with reference to FIGS. 2 and 8. If nosharing request is received at operation 1504, the process may end.

If a sharing request is received at operation 1504, device 100 mayproceed to operation 1506 and may receive a credential from the remotedevice. In some embodiments, the credential received at operation 1506may be included with the sharing request identified at operation 1504.In some embodiments, operation 1506 may be performed by D2Dcommunication module 102 and/or credential management module 106 (FIG.1). In some embodiments, the credential received at operation 1506 mayidentify the remote device. In some embodiments, operation 1506 mayinclude some or all of the operations described above with reference toFIGS. 3, 5, 8 and 10.

At operation 1508, device 100 may determine whether the remote device isauthorized to control a resource locally available to device 100 one ormore of local resources 114, referred to as “the local resource”). Insome embodiments, operation 1508 may be performed by D2D communicationmodule 102 and credential management module 106 (FIG. 1). In someembodiments, the determination of operation 1508 may be based on thecredential received from the remote device at operation 1506. In someembodiments, operation 1506 may be omitted and the determination ofoperation 1508 may be based on other criteria (for example, whether thelocal resources are currently busy or whether device 100 has sufficientpower or bandwidth to engage in resource sharing).

If device 100 determines at operation 1508 that the remote device is notauthorized to control the local resource, process 1500 may end. Ifdevice 100 determines at operation 1508 that the remote device isauthorized to control a local resource, device 100 may proceed tooperation 1510 and may provide data representative of the local resourceto the remote device. In some embodiments, operation 1510 may beperformed by D2D communication module 102, local resource control module110 resource aggregation module 108 (FIG. 1). In some embodiments, thedata representative of the local resource may include datarepresentative of current or past usage of the local resource. In someembodiments, the data representative of the local resource comprises anindicator of a property of the local resource that is subject to changeafter the local resource is no longer controlled in accordance withinstructions from the second device (see, e.g., the discussion of“stickiness” above). In some embodiments, the data representative of thelocal resource may include some or all of the data included in an ACL ora resource property manifest such as resource property manifest 1400 ofFIG. 14. In some embodiments, operation 1510 may include some or all ofthe operations described above with reference to FIGS. 3, 5, 8 and 10.Process 1500 may then end.

Referring now to FIG. 16, a flow diagram is provided of an exampleprocess 1600 for controlling a resource local to an owner device basedon instructions from a remote device, in accordance with variousembodiments. For illustrative purposes, operations of process 1600 maybe described as performed by various components of device 100 (FIG. 1),but process 1600, and individual operations of process 1600, may beperformed by any suitably configured component or combination ofcomponents of device 100. In some embodiments, process 1600 may followprocess 1500 (FIG. 15) to allow a remote device to control the localresource after enabling such control according to process 1500.

Process 1600 may begin at operation 1602 in which device 100 maydetermine whether an instruction to control a resource locally availableto device 100 (e.g., one or more of local resources 114, referred to as“the local resource”) has been received from a remote device. In someembodiments, operation 1602 may be performed by D2D communication module102 (FIG. 1). If device 100 determines at operation 1602 that noinstruction has been received, process 1600 may end. If device 100determines at operation 1602 that an instruction has been received,device 100 may proceed to operation 1604 and control the local resourcein accordance with the instruction. In some embodiments, operation 1602may be performed by local resource control module 110 (FIG. 1). In someembodiments, operation 1604 may include some or all of the operationsdescribed above with reference to FIGS. 4, 7, 9 and 13.

At operation 1606, device 100 may provide, to another remote device,updated data representative of the local resource. In some embodiments,operation 1606 may be performed by D2D communication module 102, localresource properties management module 112 and resource aggregationmodule 108 (FIG. 1). This updated data may include updated datarepresentative of properties of the local resource. For example, in someembodiments in which the local resource is a printer, device 100 mayprovide updated information to a remote device about the level of tonerremaining after another remote device has completed a print job. In someembodiments, operation 1606 may use sync map data 1408 to determine howupdates are handled for different resources. In some embodiments,operation 1606 may include some or all of the operations described abovewith reference to FIGS. 3, 5, 8 and 10. Process 1600 may then end.

Referring now to FIG. 17, a flow diagram is provided of an exampleprocess 1700 for controlling a remote resource, in accordance withvarious embodiments. For illustrative purposes, operations of process1600 may be described as performed by various components of device 100(FIG. 1), but process 1700, and individual operations of process 1700,may be performed by any suitably configured component or combination ofcomponents of device 100. In some embodiments, process 1700 may beexecuted by device 1 200 a (FIG. 2) when controlling resource 2 214 b ofdevice 2 200 b as illustrated in FIGS. 5-7.

Process 1700 may begin at operation 1702 in which device 100 may providea credential to a remote device to enable control of resource(s)available to the remove device (referred to as “remote resource(s)”). Insome embodiments, operation 1702 may be performed by D2D communicationmodule 102 and credential management module 106 (FIG. 1). In someembodiments, operation 1702 may include some or all of the operationsdescribed above with reference to FIGS. 3, 5, 8 and 10.

At operation 1704, device 100 may receive data representative of theremote resources. In some embodiments, operation 1704 may be performedby D2D communication module 102 and resource aggregation module 108(FIG. 1). In some embodiments, operation 1704 may include some or all ofthe operations described above with reference to FIGS. 3, 5, 8 and 10.

At operation 1706, device 100 may provide, to service layer 116, arepresentation of the remote resource as an available local resource. Insome embodiments, operation 1706 may be performed by resourceaggregation module 108 (FIG. 1), in some embodiments, operation 1706 mayinclude sorne or of the operations described above with reference toFIGS. 6 and 12. In some embodiments, the remote resource may beaggregated with additional resources local or remote to device 100 inthe representation to service layer 116 (e.g., as illustrated in FIGS. 6and 12). In some embodiments, the remote resource may not be aggregatedwith additional resource(s) in the representation to service layer 116.

At operation 1708, device 100 may transmit an instruction to the remotedevice to control the remote resource. In some embodiments, operation1708 may be performed by D2D communication module 102 (FIG. 1). In someembodiments, operation 1708 may include some or all of the operationsdescribed above with reference to FIGS. 4, 7, 9 and 13. Process 1700 maythen end.

Referring now to FIG. 18, a flow diagram is provided of an exampleprocess 1800 for aggregating resources for representation to a servicelayer of a device, in accordance with various embodiments. Forillustrative purposes, operations of process 1800 may be described asperformed by resource aggregation module 108 of device 100 (FIG. 1), butprocess 1800, and individual operations of process 1800, may beperformed by any suitably configured component or combination ofcomponents of device 100.

Process 1800 may begin at operation 1802 in which resource aggregationmodule 108 may determine a type associated with a first resource that isa candidate for aggregation. The first resource may be local to device100 (e.g., one or more of local resources 114) or remote to device 100.In some embodiments, determining a type of the first resource atoperation 1802 may include identifying type data contained in a resourceproperty manifest (e.g., resource property manifest 1400 of FIG. 14)associated with the first resource. In some embodiments, determining atype of the first resource at operation 1802 may include analyzing otherdata, such as a model name or serial number associated with the firstresource. In some embodiments, a remote resource may appear as anadditional “local” resource to the resource aggregator, with avirtualization proxy implemented at a lower layer for systems withvirtualization mechanisms available.

At operation 1804, resource aggregation module 108 may determine a typeassociated with a second resource that is a candidate for aggregation.The second resource may be local to device 100 (e.g., one or more oflocal resources 114) or remote to device 100. Determining a type atoperation 1804 may take any of the thrms described above with referenceto determining a type at operation 1802. In some embodiments, differentkinds of data may be used at operations 1802 and 1804 to identify thetypes of the first and second resources; for example, the type of thefirst resource may be identified by type data included in a resourceproperty manifest, while the type of the second resource may beidentified by a model name or serial number.

At operation 1806, resource aggregation module 108 may determine whetherthe type of the first resource and the type of the second resource are asame type. If no, process 1800 may then end. If yes, resourceaggregation module 108 may proceed to operation 1808 and provide, toservice layer 116 of device 100, a representation of an aggregate of thefirst and second resources. In some embodiments, operation 1808 mayinclude some or all of the operations described above with reference toFAGS. 6 and 12. Process 1800 may then end.

Referring now to FIG. 19, a block diagram is provided of an examplecomputing device suitable for practicing the disclosed embodiments, inaccordance with various embodiments. As shown, computing device 1900includes a number of processing device(s) 1902, and system memory 1904.Examples of devices that may be included in processing device(s) 1902include central processing units (CPUs), microprocessors, graphicsprocessing units, and digital signal processing units. Additionally,computing system 1900 may include mass storage devices 1906 (such asdiskette, hard drive, compact disc read only memory (CDROM) and soforth), input/output devices 1908 (such as display, keyboard, cursorcontrol and so forth) and communication interfaces 1910 (such as networkinterface cards, modems and so forth). The elements may be coupled toeach other via system bus 1912, which represents one or more buses. Inthe case of multiple buses, they may be bridged by one or more busbridges (not shown).

Each of these elements may perform its conventional functions known inthe art. In particular, system memory 1904 and mass storage 1906 may beemployed to store a working copy and a permanent copy of the programminginstructions implementing the method of any of FIGS. 15-18, or portionsthereof, herein collectively denoted as computational logic 1922. Thevarious components may be implemented by assembler instructionssupported by processing device(s) 1902 or high-level languages, such as,for example, C, that can be compiled into such instructions. Machinereadable media included in computing device 1900 or readable bycomputing device 1900 may include suitable volatile or non-volatilememory (e.g., flash memory) and/or may include any suitable non-volatilestorage device(s), such as one or more hard disk drive(s) (HDD(s)), oneor more solid-state drive(s), one or more compact discs (CDs), and/orone or more digital versatile discs (DVDs), for example.

The permanent copy of the programming instructions may be placed intopermanent storage 1906 in the factory, or in the field, through, forexample, a machine-accessible distribution medium (not shown), such as acompact disc (CD), or through communication interface 1910 (e.g., from adistribution server (not shown)). That is, one or more distributionmedia having an implementation of the instructions may be employed todistribute the instructions and program various computing devices. Theconstitution of elements 1902-1912 are known, and accordingly will notbe further described. Any one or more suitable hardware, firmware, orsoftware components of computing device 1900, or any combinationthereof, may serve as a resource for sharing in a D2D) resource sharingsystem in accordance with the techniques disclosed herein.

Machine-readable media (including non-transitory machine readable media,such as), methods, systems and devices for performing theabove-described techniques are illustrative examples of embodimentsdisclosed herein. Additionally, other devices in the above-describedinteractions may be configured to perform various disclosed techniques.

EXAMPLES

Example 1 is a method for sharing resources between devices, including:establishing a device-to-device communication channel between a firstdevice and a second device; receiving, from the second device, a sharingrequest including a credential identifying the second device; providing,to the second device from the first device, data representative of afirst resource locally available to the first device, the first resourcenot locally available to the second device; and controlling use of thefirst resource in accordance with an instruction transmitted to thefirst device from the second device.

Example 2 may include the subject matter of Example 1, and furtherspecifies that the sharing request is triggered by a near-fieldcommunication tap between the first device and the second device, aninfrared-based ping query between the first device and the seconddevice, or a location change of the second device.

Example 3 may include the subject matter of any of Examples 1-2, andfurther includes, prior to controlling use of the first resource inaccordance with the instruction transmitted to the first device from thesecond device, determining, at the first device, that the second deviceis authorized to control the first resource based on the credentialreceived from the second device.

Example 4 may include the subject matter of any of Examples 1-3, andfurther specifies that the data representative of the first resourceincludes data representative of current or past usage of the firstresource.

Example 5 may include the subject matter of any of Examples 1-4, andfurther specifies that the data representative of the first resourceincludes an indicator of a property of the first resource that issubject to change after the first resource is no longer controlled inaccordance with an instruction from the second device.

Example 6 may include the subject matter of any of Examples 1-5, andfurther includes: establishing a second device-to-device communicationchannel between the first device and a third device, the third devicedifferent from the second device; receiving, from the third device, asharing request including a credential identifying the third device;providing, to the third device front the first device, datarepresentative of the first resource, the first resource not locallyavailable to the third device; and controlling use of the first resourcein accordance with an instruction transmitted to the first device fromthe third device.

Example 7 may include the subject matter of Example 6, and furtherincludes sending, to the second device, updated data representative ofthe first resource after controlling use of the first resource inaccordance with the instructions transmitted to the first device fromthe third device.

Example 8 may include the subject matter of any of Examples 1-7, andfurther includes: providing, to the second device, a credentialidentifying the first device; receiving, at the first device from thesecond device, data representative of a second resource locallyavailable to the second device, the second resource not locallyavailable to the first device; and providing, to the service layer ofthe first device, a representation of the second resource as a localresource available for use by the service layer.

Example 9 may include the subject matter of Example 8, and furtherspecifies that providing, to a service layer of the first device, arepresentation of the second resource as a local resource available foruse by the service layer includes: identifying a type of the secondresource based on the data representative of the second resource;identifying a third resource locally available to the first device, thethird resource having a same type as the type of the second resource;and providing, to a service layer of the first device, a representationof an aggregate of the second and third resources.

Example 10 may include the subject matter of Example 8, and furtherincludes: establishing a second device-to-device communication channelbetween the first device and a third device, the third device differentfrom the second device; providing, to the third device over the seconddevice-to-device communication channel, a credential identifying thefirst device; receiving, at the first device from the third device, datarepresentative of a third resource locally available to the thirddevice, the third resource not locally available to the first device;and providing, to a service layer of the first device, a representationof the third resource as a local resource available for use by theservice layer.

Example 11 may include the subject matter of Example 10, and furtherspecifies that providing, to a service layer of the first device, arepresentation of the third resource as a local resource available foruse by the service layer includes: identifying a type of the secondresource based on the data representative of the second resource;identifying a typo of the third resource based on the datarepresentative of the third resource; and providing, to a service layerof the first device, a representation of an aggregate of the second andthird resources.

Example 12 may include the subject matter of any of Examples 1-11, andfurther specifies that the first device includes a personal computingdevice and the second device includes a personal computing device, acamera, or a musical instrument.

Example 13 is one or more machine readable media including instructionsthat, in response to execution by a processing device of a first device,cause the first device to perform the method of any of Examples 1-12.

Example 14 is one or more machine readable media including instructionsthat, in response to execution by a processing device of a first device,cause the first device to: establish a device-to-device communicationchannel between the first device and a second device; receive, from thesecond device, a sharing request including a credential identifying thesecond device; provide, to the second device, data representative of afirst resource locally available to the first device, the first resourcenot locally available to the second device; and control use of the firstresource in accordance with an instruction transmitted to the firstdevice from the second device.

Example 15 may include the subject matter of Example 14, and furtherspecifies that the sharing request is triggered by a near-fieldcommunication tap between the first device and the second device, aninfrared-based ping query between the first device and the seconddevice, or a location change of the second device.

Example 16 may include the subject matter of any of Examples 14-15, andfluffier includes instructions that, in response to execution by theprocessing device, cause the first device to: prior to controlling useof the first resource in accordance with the instruction transmitted tothe first device from the second device, determine that the seconddevice is authorized to control the first resource based on thecredential received from the second device.

Example 17 may include the subject matter of any of Examples 14-16, andfurther specifies that the data representative of the first resourceincludes data representative of current or past usage of the firstresource.

Example 18 may include the subject matter of any of Examples 14-17, andfurther specifies that the data representative of the first resourceincludes an indicator of a property of the first resource that issubject to change after the first resource is no longer controlled inaccordance with an instruction from the second device.

Example 19 may include the subject matter of any of Examples 14-18, andfurther includes instructions that, in response to execution by theprocessing device, cause the first device to: establish a seconddevice-to-device communication channel between the first device and athird device, the third device different from the second device;receive, from the third device, a sharing request including a credentialidentifying the third device; provide, to the third device, datarepresentative of the first resource, the first resource not locallyavailable to the third device; and control use of the first resource inaccordance with an instruction transmitted to the first device from thethird device.

Example 20 may include the subject matter of Example 19, and furtherincludes instructions that, in response to execution by the processingdevice, cause the first device to: send, to the second device, updateddata representative of the first resource after controlling use of thefirst resource in accordance with the instructions transmitted to thefirst device from the third device.

Example 21 may include the subject matter of any of Examples 14-20, andfurther includes instructions that, in response to execution by theprocessing device, cause the first device to: provide, to the seconddevice, a credential identifying the first device; receive, from thesecond device, data representative of a second resource locallyavailable to the second device, the second resource not locallyavailable to the first device; and provide, to a service layer of thefirst device, a representation of the second resource as a localresource available for use by the service layer.

Example 22 may include the subject matter of Example 21, and furtherspecifies that provide, to a service layer of the first device, arepresentation of the second resource as a local resource available foruse by the service layer includes: idea type of the second resourcebased on the data representative of the second resource; identify athird resource locally available to the first device, the third resourcehaving a same type as the type of the second resource; and provide, toihe service layer of the first device, a representation of an aggregateof the second and third resources.

Example 23 may include the subject matter of Example 21, and furtherincludes instructions that, in response to execution by the processingdevice, cause the first device to: establish a second device-to-devicecommunication channel between the first device and a third device, thethird device different from the second device; provide, to the thirddevice over the second device-to-device communication channel, acredential identifying the first device; receive, from the third device,data representative of a third resource locally available to the thirddevice, the third resource not locally available to the first device;and provide, to a service layer of the first device, a representation ofthe third resource as a local resource available for use by the servicelayer.

Example 24 may include the subject matter of Example 23, and furtherspecifies that provide, to a service layer of the first device, arepresentation of the third resource as a local resource available foruse by the service layer includes: identify a type of the secondresource based on the data representative of the second resource;identify a type of the third resource based on the data representativeof the third resource; and provide, to the service layer of the firstdevice, a representation of an aggregate of the second and thirdresources.

Example 25 may include the subject matter of any of Examples 14-24, andfurther specifies that the first device includes a personal computingdevice and the second device includes a personal computing device, acamera, or a musical instrument.

Example 26 is an apparatus for sharing resources, including: means forestablishing a device-to-device communication channel between theapparatus and a second device; means for receiving, from the seconddevice, a sharing request including a credential identifying the seconddevice; means for providing, to the second device, data representativeof a first resource locally available to the first device, the firstresource not locally available to the second device; and means forcontrolling use of the first resource in accordance with an instructiontransmitted to the apparatus from the second device.

Example 27 may include the subject matter of Example 26, and furtherincludes: means for providing, to the second device, a credentialidentifying the apparatus; means for receiving, front the second device,data representative of a second resource locally available to the seconddevice, the second resource not locally available to the apparatus; andmeans for providing, to a service layer of the apparatus, arepresentation of the second resource as a local resource available foruse by the service layer.

Example 28 may include the subject matter of any of Examples 26-27, andfurther specifies that the means for providing, to a service layer ofthe apparatus, a representation of the second resource as a localresource available for use by the service layer includes: means foridentifying a type of the second resource based on the datarepresentative of the second resource; means for identifying a thirdresource locally available to the apparatus, the third resource having asame type as the type of the second resource; and means for providing,to the service layer of the apparatus, a representation of an aggregateof the second and third resources.

Example 29 may include the subject matter of any of Examples 26-28, andfurther includes: means for establishing a second device-to-devicecommunication channel between the apparatus and a third device, thethird device different from the second device; means for providing, tothe third device over the second device-to-device communication channel,a credential identifying the apparatus; means for receiving, from thethird device, data representative of a third resource locally availableto the third device, the third resource not locally available to theapparatus; and means for providing, to a service layer of the apparatus,a representation of the third resource as a local resource available foruse by the service layer.

Example 30 is an apparatus for sharing resources between devices,including one or more processing devices, and one or more machinereadable media configured with instructions that, in response toexecution by the one or more processing devices, cause the apparatus to:establish a device-to-device communication channel between the apparatusand a second device; receive, from the second device, a sharing requestincluding a credential identifying the second device; provide, to thesecond device, data representative of a first resource locally availableto the apparatus, the first resource not locally available to the seconddevice; and control use of the first resource in accordance with aninstruction transmitted to the apparatus from the second device.

Example 31 may include the subject matter of Example 30, and furtherspecifies that the sharing request is triggered by a near-fieldcommunication tap between the apparatus and the second device, aninfrared-based ping query between the apparatus and the second device,or a location change of the second device.

Example 32 may include the subject matter of any of Examples 30-31, andfurther specifies that the one or more machine readable further includeinstructions that, in response to execution by the one or moreprocessing devices, cause the apparatus to: prior to controlling use ofthe first resource in accordance with the instruction transmitted to theapparatus from the second device, determine that the second device isauthorized to control the first resource based on the credentialreceived from the second device.

Example 33 may include the subject matter of any of Examples 30-32, andfurther specifies that the data representative of the first resourceincludes data representative of current or past usage of the firstresource.

Example 34 may include the subject matter of any of Examples 30-33, andfurther specifies that the data representative of the first resourceincludes an indicator of a property of the first resource that issubject to change after the first resource is no longer controlled inaccordance with an instruction from the second device.

Example 35 may include the subject matter of any of Examples 30-34, andfurther specifies that the one or more machine readable media furtherincludes instructions that, in response to execution by the one or moreprocessing devices, cause the apparatus to: establish a seconddevice-to-device communication channel between the apparatus and a thirddevice, the third device different from the second device; receive, fromthe third device, a sharing request including a credential identifyingthe third device; provide, to the third device, data representative ofthe first resource, the first resource not locally available to thethird device; and control use of the first resource in accordance withan instruction transmitted to the apparatus from the third device.

Example 36 may include the subject matter of Example 35, and furtherspecifies that the one or more machine readable media further includesinstructions that, in response to execution by the one or moreprocessing devices, cause the apparatus to: send, to the second device,updated data representative of the first resource after controlling useof the first resource in accordance with the instructions transmitted tothe apparatus from the third device.

Example 37 may include the subject matter of any of Examples 30-36, andfurther specifies that the one or more machine readable media furtherincludes instructions that, in response to execution by the one or moreprocessing devices, cause the apparatus to: provide, to the seconddevice, a credential identifying the apparatus; receive, from the seconddevice, data representative of a second resource locally available tothe second device, the second resource not locally available to theapparatus; and provide, to a service layer of the apparatus, arepresentation of the second resource as a local resource available foruse by the service layer.

Example 38 may include the subject matter of Example 37, and furtherspecifies that provide, to a service layer of the apparatus, arepresentation of the second resource as a local resource available foruse by the service layer includes: identify a type of the secondresource based on the data representative of the second resource;identify a third resource locally available to the apparatus, the thirdresource having a same type as the type of the second resource; andprovide, to the service layer of the apparatus, a representation of anaggregate of the second and third resources.

Example 39 may include the subject matter of Example 37, and furtherspecifies that the one or more machine readable media further includesinstructions that, in response to execution by the one or moreprocessing devices, cause the apparatus to: establish a seconddevice-to-device communication channel between the apparatus and a thirddevice, the third device different from the second device; provide, tothe third device over the second device-to-device communication channel,a credential identifying the apparatus; receive, from the third device,data representative of a third resource locally available to the thirddevice, the third resource not locally available to the apparatus; andprovide, to a service layer of the apparatus, a representation of thethird resource as a local resource available for use by the servicelayer.

Example 40 may include the subject matter of Example 39, and furtherspecifies that provide, to a service layer of the apparatus, arepresentation of the third resource as a local resource available foruse by the service layer includes: identify a type of the secondresource based on the data representative of the second resource;identify a type of the third resource based on the data representativeof the third resource; and provide, to the service layer of theapparatus, a representation of an aggregate of the second and thirdresources.

Example 41 may include the subject matter of any of Examples 30-40, andfurther specifies that the apparatus includes a personal computingdevice and the second device includes a personal computing device, acamera, or a musical instrument.

Example 42 is an apparatus for sharing resources including means forperforming the method of any of Examples 1-12.

1. An apparatus for sharing resources between devices, comprising: one or more processing devices; and one or more machine readable media configured with instructions that, in response to execution by the one or more processing devices, cause the apparatus to: establish a device-to-device communication channel between the apparatus and a second device; receive, from the second device, a sharing request including a credential identifying the second device; provide, to the second device, data representative of a first resource locally available to the apparatus, the first resource not locally available to the second device; and control use of the first resource in accordance with an instruction transmitted to the apparatus from the second device.
 2. The apparatus of claim 1, wherein the sharing request is triggered by a near-field communication tap between the apparatus and the second device, an infrared-based ping query between the apparatus and the second device, or a location change of the second device.
 3. The apparatus of claim 1, wherein the one or more machine readable media further comprise instructions that, in response to execution by the one or more processing devices, cause the apparatus to: prior to controlling use of the first resource in accordance with the instruction transmitted to the apparatus from the second device, determine that the second device is authorized to control the first resource based on the credential received from the second device.
 4. The apparatus of claim 1, wherein the data representative of the first resource comprises data representative of current or past usage of the first resource.
 5. The apparatus of claim 1, wherein the data representative of the first resource comprises an indicator of a property of the first resource that is subject to change after the first resource is no longer controlled in accordance with an instruction from the second device.
 6. The apparatus of claim 1, wherein the one or more machine readable media further comprises instructions that, in response to execution by the one or more processing devices, cause the apparatus to: establish a second device-to-device communication channel between the apparatus and a third device, the third device different from the second device; receive, from the third device, a sharing request including a credential identifying the third device; provide, to the third device, data representative of the first resource, the first resource not locally available to the third device; and control use of the first resource in accordance with an instruction transmitted to the apparatus from the third device.
 7. The apparatus of claim 6, wherein the one or more machine readable media further comprises instructions that, in response to execution by the one or more processing devices, cause the apparatus to: send, to the second device, updated data representative of the first resource after controlling use of the first resource in accordance with the instructions transmitted to the apparatus from the third device.
 8. The apparatus of claim 1, wherein the one or more machine readable media further comprises instructions that, in response to execution by the one or more processing devices, cause the apparatus to: provide, to the second device, a credential identifying the apparatus; receive, from the second device, data representative of a second resource locally available to the second device, the second resource not locally available to the apparatus; and provide, to a service layer of the apparatus, a representation of the second resource as a local resource available for use by the service layer.
 9. The apparatus of claim 8, wherein provide, to a service layer of the apparatus, a representation of the second resource as a local resource available for use by the service layer comprises: identify a type of the second resource based on the data representative of the second resource; identify a third resource locally available to the apparatus, the third resource having a same type as the type of the second resource; and provide, to the service layer of the apparatus, a representation of an aggregate of the second and third resources.
 10. The apparatus of claim 8, wherein the one or more machine readable media further comprises instructions that, in response to execution by the one or more processing devices, cause the apparatus to: establish a second device-to-device communication channel between the apparatus and a third device, the third device different from the second device; provide, to the third device over the second device-to-device communication channel, a credential identifying the apparatus; receive, from the third device, data representative of a third resource locally available to the third device, the third resource not locally available to the apparatus; and provide, to a service layer of the apparatus, a representation of the third resource as a local resource available for use by the service layer.
 11. The apparatus of claim 10, wherein provide, to a service layer of the apparatus, a representation of the third resource as a local resource available for use by the service layer comprises: identify a type of the second resource based on the data representative of the second resource; identify a type of the third resource based on the data representative of the third resource; and provide, to the service layer of the apparatus, a representation of an aggregate of the second and third resources.
 12. At least one non-transitory computer-readable storage medium comprising a plurality of instructions configured to cause a first device, in response to execution of the instructions by the computing device, to: establish a device-to-device communication channel with a second device; receive, from the second device, a sharing request including a credential identifying the second device; provide, to the second device, data representative of a first resource locally available to the first device, the first resource not locally available to the second device; and control use of the first resource in accordance with an instruction transmitted to the first device from the second device.
 13. The storage medium of claim 12, wherein the sharing request is triggered by a near-field communication tap between the first device and the second device, an infrared-based ping query between the first device and the second device, or a location change of the second device.
 14. The storage medium of claim 12, wherein the first device is further caused to: prior to controlling use of the first resource in accordance with the instruction transmitted to the first device from the second device, determine, that the second device is authorized to control the first resource based on the credential received from the second device.
 15. The storage medium of claim 12, wherein the data representative of the first resource comprises data representative of current or past usage of the first resource.
 16. The storage medium of claim 12, wherein the data representative of the first resource comprises an indicator of a property of the first resource that is subject to change after the first resource is no longer controlled in accordance with an instruction from the second device.
 17. The storage medium of claim 12, wherein the first device is further caused to: establish a second device-to-device communication channel with a third device, the third device different from the second device; receive, from the third device, a sharing request including a credential identifying the third device; provide, to the third device from the first device, data representative of the first resource, the first resource not locally available to the third device; and control use of the first resource in accordance with an instruction transmitted to the first device from the third device.
 18. The storage medium of claim 17, wherein the first device is further caused to: send, to the second device, updated data representative of the first resource after controlling use of the first resource in accordance with the instructions transmitted to the first device from the third device.
 19. The storage medium of claim 12, wherein the first device is further caused to: provide, to the second device, a credential identifying the first device; receive, from the second device, data representative of a second resource locally available to the second device, the second resource not locally available to the first device; and provide, to the service layer of the first device, a representation of the second resource as a local resource available for use by the service layer.
 20. The storage medium of claim 19, wherein provide, to a service layer of the first device, a representation of the second resource as a local resource available for use by the service layer comprises: identify a type of the second resource based on the data representative of the second resource; identify a third resource locally available to the first device, the third resource having a same type as the type of the second resource; and provide, to a service layer of the first device, a representation of an aggregate of the second and third resources.
 21. The storage medium of claim 19, wherein the first device is further caused to: establish a second device-to-device communication channel withd a third device, the third device different from the second device; provide, to the third device over the second device-to-device communication channel, a credential identifying the first device; receive, from the third device, data representative of a third resource locally available to the third device, the third resource not locally available to the first device; and provide, to a service layer of the first device, a representation of the third resource as a local resource available for use by the service layer.
 22. The storage medium of claim 21, wherein provide, to a service layer of the first device, a representation of the third resource as a local resource available for use by the service layer comprises: identify a type of the second resource based on the data representative of the second resource; identify a type of the third resource based on the data representative of the third resource; and provide, to a service layer of the first device, a representation of an aggregate of the second and third resources.
 23. The storage medium of claim 12, wherein the first device comprises a personal computing device and the second device comprises a personal computing device, a camera, or a musical instrument.
 24. (canceled)
 25. (canceled)
 26. A method for sharing resources between devices, comprising: establishing a device-to-device communication channel between a first device and a second device; receiving, from the second device, a sharing request including a credential identifying the second device; providing, to the second device from the first device, data representative of a first resource locally available to the first device, the first resource not locally available to the second device; and controlling use of the first resource in accordance with an instruction transmitted to the first device from the second device.
 27. The method of claim 26, further comprising: prior to controlling use of the first resource in accordance with the instruction transmitted to the first device from the second device, determining, at the first device, that the second device is authorized to control the first resource based on the credential received from the second device.
 28. The method of claim 26, further comprising: establishing a second device-to-device communication channel between the first device and a third device, the third device different from the second device; receiving, from the third device, a sharing request including a credential identifying the third device; providing, to the third device from the first device, data representative of the first resource, the first resource not locally available to the third device; and controlling use of the first resource in accordance with an instruction transmitted to the first device from the third device.
 29. The method of claim 26, further comprising: providing, to the second device, a credential identifying the first device; receiving, at the first device from the second device, data representative of a second resource locally available to the second device, the second resource not locally available to the first device; and providing, to the service layer of the first device, a representation of the second resource as a local resource available for use by the service layer. 